맨위로가기

GNU 허드

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

GNU Hurd는 GNU 프로젝트의 커널로, 유닉스 운영 체제를 대체하는 것을 목표로 개발되었다. HIRD of Unix-Replacing Daemons의 약자이며, 재귀적 약어이다. 1990년 Mach 마이크로커널을 기반으로 개발이 시작되었으며, 파일 시스템과 인증 서버, init 등을 작동시키는 데 성공했으나, 제품 수준의 성능과 안정성을 달성하지 못해 개발이 지연되었다. 마이크로커널 기반의 서버-클라이언트 아키텍처를 사용하며, 파일 시스템 기능을 확장하는 트랜슬레이터 개념을 제공한다. 데비안 GNU/Hurd 등 Hurd 기반 배포판이 존재하지만, 아직까지 정식 버전 출시에는 이르지 못했다.

더 읽어볼만한 페이지

  • 유닉스 계열 - 제닉스
    제닉스는 마이크로소프트가 1980년에 출시한 유닉스 계열 운영 체제로, AT&T의 버전 7 유닉스 라이선스를 기반으로 개발되어 다양한 하드웨어 아키텍처로 포팅되어 널리 사용되었으나, 마이크로소프트가 OS/2 개발에 집중하면서 SCO에 판권이 이전되었고, SCO UNIX로 발전하면서 개발이 종료되었지만, 일부 시스템 콜은 MS-DOS 및 윈도우에 남아있다.
  • 유닉스 계열 - NeXTSTEP
    NeXTSTEP은 NeXT에서 개발한 마하 커널 기반의 유닉스 계열 운영 체제로, BSD 소스 코드를 포함하며 디스플레이 포스트스크립트, 독점적인 창 관리 엔진, Objective-C 언어 및 런타임 환경을 제공하고 현대적인 운영체제 인터페이스 발전에 기여하여 macOS의 기반이 되었으며 최초의 웹 브라우저와 앱 스토어 개발에 영향을 미쳤다.
  • 자유 소프트웨어 운영체제 - MS-DOS
    MS-DOS는 마이크로소프트가 개발한 개인용 컴퓨터용 디스크 운영 체제로, IBM PC의 표준 운영 체제로 널리 사용되었으며, 단일 작업 환경과 명령줄 인터페이스를 특징으로 한다.
  • 자유 소프트웨어 운영체제 - CP/M
    CP/M은 게리 킬달이 개발한 8비트 마이크로컴퓨터용 운영체제로, 플로피 디스크 기반의 다양한 하드웨어 플랫폼에서 작동하며, 뛰어난 이식성과 방대한 소프트웨어 라이브러리를 바탕으로 1980년대 초반 널리 사용되었으나, MS-DOS의 부상으로 시장 점유율을 잃었지만 MS-DOS와 초기 윈도우 운영체제에 영향을 미쳤다.
  • 읽기 전용 매체로 부팅 가능한 운영체제 - 모르프OS
    모르프OS는 1999년 Quark 마이크로커널 기반으로 개발되어 AmigaOS의 대안을 목표로 PowerPC 기반 컴퓨터를 위해 만들어진 운영체제로, 빠른 속도와 세련된 인터페이스를 지향하며 AmigaOne, Macintosh, Efika, Pegasos 등의 특정 하드웨어에서 실행되도록 설계되었다.
  • 읽기 전용 매체로 부팅 가능한 운영체제 - 라이브 CD
    라이브 CD는 광학 디스크에서 직접 부팅하여 운영 체제 및 응용 프로그램을 실행하는 매체로, 하드 디스크 설치 없이 컴퓨터를 사용하거나 시스템 및 데이터 복구, 리눅스 배포판 시험 사용 등에 활용되며, 기술 발전과 사용자 정의 시스템 구축 도구 등장으로 활용도가 높아졌다.
GNU 허드 - [IT 관련 정보]에 관한 문서
GNU 허드 정보
GNU 허드 로고
GNU 허드 로고
허드에서 실행되는 소프트웨어
소프트웨어 실행 화면
개발
개발자GNU 프로젝트
토마스 버시넬
롤란드 맥그라스
마르쿠스 브링크만
닐 왈필드
사무엘 시볼트
개발 언어C
어셈블리어
저장소GNU Hurd Git 저장소
GNU Hurd CVS 저장소
GNU Hurd GitLab 미러
GNU Hurd Git 미러 (sceen.net)
일반 정보
계열유닉스 계열
상태개발 중
소스 모델프리 소프트웨어
커널 종류다중 서버 마이크로커널
라이선스GNU 일반 공중 사용 허가서
웹사이트GNU Hurd 공식 웹사이트
릴리스 정보
최초 릴리스1990년
최신 버전0.9
최신 버전 출시일2016년 12월 18일
지원 플랫폼
지원 플랫폼x86-64
IA-32
i686
ARM

2. 명칭 및 로고

Hurd는 HIRD of Unix-Replacing Daemons(유닉스를 대체하는 데몬들의 HIRD)의 약자이며, 여기서 HIRD는 HURD of Interfaces Representing Depth(깊이를 나타내는 인터페이스들의 HURD)를 줄인 말로 재귀 약자이다. 1991년 12월, 허드의 주요 설계자는 이 이름을 상호 재귀적 약어로 설명했다.[5]

"hurd"와 "hird"는 모두 영어 단어 "herd"와 동음이의어이므로, 전체 이름인 "GNU Hurd"는 커널이 작동하는 방식을 반영하여 "gnu무리(herd)"라는 말장난이기도 하다.

로고는 "허드 상자"라고 불리며 아키텍처를 반영한다. 로고는 노드가 허드 커널의 서버를 나타내고, 방향이 있는 에지가 IPC 메시지인 그래프이다.[5]

3. 개발 역사

Hurd는 HIRD of Unix-Replacing Daemons(유닉스를 대체하는 데몬들의 HIRD)의 약자이며 여기서 HIRD는 HURD of Interfaces Representing Depth(깊이를 나타내는 인터페이스들의 HURD)를 줄인 말로 재귀 약자다.

리처드 스톨먼1983년 GNU 프로젝트를 설립하여 자유 소프트웨어 GNU 운영체제를 만들고자 했다.[6] 초기에는 텍스트 편집기, 유닉스 셸, 컴파일러, 디버거 등 커널 개발에 필요한 구성 요소들이 작성되었다. 1989년 GPL이 만들어졌지만, 핵심 구성 요소인 커널은 없었다.[7]

1990년부터 매사추세츠 공과대학교(MIT)에서 개발된 TRIX 운영체제 연구를 기반으로 허드 개발이 시작되었다. 초기 허드 아키텍트인 토마스 부쉬넬은 4.4BSD-Lite 커널을 적용하는 것이 초기 계획이었으나, 1987년 카네기 멜론 대학교에서 개발된 Mach 마이크로커널을 사용하기로 하면서 3년간 지연되었다.

1991년 리눅스 커널이 출시되면서 GNU 사용자 공간 구성 요소는 리눅스 커널 기반 운영체제에서 주로 사용되었고, ''GNU/Linux''라는 용어가 생겨났다.

허드 개발은 느리게 진행되어, 2002년 스톨먼의 낙관적인 발표에도 불구하고, 프로덕션 환경에 적합하지 않다고 평가받았다. 2010년 스톨먼은 개발에 난항이 있다고 언급했지만, 자유 커널 (리눅스)이 이미 존재하기 때문에 GNU 시스템에 "완성이 중요하지 않다"고 덧붙였다.

데비안 프로젝트는 IBM PC 호환 시스템용 허드 기반 GNU 운영체제의 바이너리 배포판을 제작하기 위해 허드 프로젝트를 진행해 왔다. 2015년2016년에는 개발이 다시 활발해져 4개의 릴리스가 있었지만, 그 이후로는 더 이상 없었다.[8] 2015년 8월 20일, 구글 서머 오브 코드 기간 동안 GNU Guix가 GNU 허드로 포팅되었다는 발표가 있었다.[9]

1994년 4월에 부팅이 가능해졌고, 파일 시스템, 인증 서버, init 등을 작동시키는 데 성공했다. 같은 해 7월에는 emacs를, 11월에는 gcc를 작동시키는 데에도 성공했다.

1996년 4월에 버전 0.0(테스트판) 소스 코드 및 i386 아키텍처에서 작동하는 바이너리가 공개되었다.

1997년 6월, 다른 GNU 소프트웨어와 조합하여 완전한 OS로 사용할 수 있는 버전 0.2가 출시되었다. 데비안 프로젝트에 의한 컴파일된 바이너리 Debian GNU/Hurd도 배포되고 있지만, 제품 수준의 시스템에 비해 기대되는 성능이나 안정성을 달성하지 못한 상태[21]이며, 현재도 개발 중으로 정식 버전을 출시하는 데 이르지 못하고 있다.

리처드 스톨먼1990년부터 개발을 시작했지만,[17] 개발 속도는 늦어 2011년 현재에도 정식 버전이 릴리스되지 못하고 있다. 개발 지연으로 인해, UNIX 호환 자유 커널로서는 리눅스가 사실상의 표준이 되고 있다. 스톨먼은 개발 지연이 마이크로커널의 디버깅이 예상보다 어려웠기 때문이며, 리눅스가 빨리 개발될 수 있었던 것은 모놀리식 커널이기 때문이라고 말했다.[18]

3. 1. 초기 개발 및 Trix

리처드 스톨먼은 1983년 9월, 자유 소프트웨어 GNU 운영체제를 만들기 위한 GNU 프로젝트를 설립했다.[6] 초기에는 텍스트 편집기, 유닉스 셸, 컴파일러, 디버거 등 커널 개발에 필요한 구성 요소들이 작성되었다. 1989년에는 GPL이 만들어졌지만, 핵심 구성 요소인 커널은 아직 없었다.[7]

허드 개발은 1990년에 매사추세츠 공과대학교(MIT) 컴퓨터 과학 연구소(LCS)의 스티브 워드 교수와 그의 그룹이 개발한 TRIX 운영체제 연구를 기반으로 시작되었다. 이는 1986년의 실패한 커널 시도 이후의 일이었다. 초기 허드 아키텍트인 토마스 부쉬넬은 초기 계획이 4.4BSD-Lite 커널을 적용하는 것이었다고 회고하며, "지금 와서 보면 이것이 훌륭하게 성공했을 것이고 세상은 매우 달라졌을 것이다."라고 말했다.

1986년 2월, 리처드 스톨먼은 GNU의 공식 커널로 매사추세츠 공과대학교에서 개발된 Trix (operating system)|TRIX영어를 사용하겠다고 발표했고, 같은 해 12월까지 자유 소프트웨어 재단(FSF)은 TRIX 개량을 시작했다.

1987년~1988년 경, FSF는 TRIX를 직접 개량하는 것보다 다른 곳에서 만든 커널을 사용하고 싶어했다. 당시 후보로는 TRIX를 계속 개량하는 것, 캘리포니아 대학교 버클리에서 개발된 sprite를 사용하는 것, 카네기 멜론 대학교에서 개발되어 후에 공식 커널이 된 Mach를 사용하는 것이 있었다.

1987년, 리처드 스톨먼은 카네기 멜론 대학교의 리처드 라시드가 개발한 Mach 마이크로커널을 사용할 것을 제안했다. 그러나 CMU가 Mach 코드를 적절한 라이선스로 공개할지 불확실했기 때문에 이 작업은 3년 동안 지연되었다.

1990년, Mach가 4.3BSD에 관한 부분을 커널에서 유저랜드로 제거하여 GNU의 재배포 라이선스에 적합하게 되자,[20] FSF는 Mach 위에서 작동하는 Hurd의 개발을 시작했다. 이로써 Mach가 GNU의 공식 커널이 되었다.

3. 2. Mach 마이크로커널의 채택과 지연

1983년 9월, 리처드 스톨먼자유 소프트웨어 GNU 운영체제를 만들려는 목표로 GNU 프로젝트를 설립했다.[6] 초기에는 텍스트 편집기, 유닉스 셸, 컴파일러, 디버거 등 커널 개발에 필요한 구성 요소들이 작성되었다. 1989년까지 GPL이 만들어졌고, 커널은 유일하게 빠진 주요 구성 요소였다.[7]

1990년에 허드 개발이 시작되었다. 이는 1986년의 실패한 커널 시도 이후, 매사추세츠 공과대학교(MIT) 컴퓨터 과학 연구소(LCS)의 스티브 워드 교수와 그의 그룹이 개발한 TRIX 운영체제 연구를 기반으로 했다. 초기 허드 아키텍트인 토마스 부쉬넬은 초기 계획은 4.4BSD-Lite 커널을 적용하는 것이었고, "이제 와서 보면 이것이 훌륭하게 성공했을 것이고 세상은 매우 달라졌을 것이다."라고 회고했다. 1987년 리처드 스톨먼은 카네기 멜론 대학교의 리처드 라시드가 개발한 Mach 마이크로커널을 사용할 것을 제안했다. CMU가 Mach 코드를 적절한 라이선스 하에 공개할지 여부에 대한 불확실성으로 인해 이 작업은 3년 동안 지연되었다.

1991년 리눅스 커널이 출시되면서 GNU의 사용자 공간 구성 요소의 주요 사용자는 곧 리눅스 커널 기반 운영체제 (리눅스 배포판)가 되었고, ''GNU/Linux''라는 용어가 생겨났다.

허드의 개발은 느리게 진행되었다. 스톨먼이 2002년에 그 해 말에 GNU/Hurd를 출시할 것이라고 낙관적으로 발표했음에도 불구하고, 허드는 여전히 프로덕션 환경에 적합하지 않다고 여겨진다. 전반적인 개발은 기대에 미치지 못했으며, 여전히 상당수의 버그와 누락된 기능이 있다. 이로 인해 스톨먼을 포함한 많은 사람들이 예상했던 것보다 좋지 않은 제품이 나왔다. 2010년, 20년의 개발 기간 이후, 스톨먼은 "GNU 허드에 대해 낙관적이지 않다. 약간의 진전은 있지만, 진정으로 뛰어나려면 많은 심각한 문제를 해결해야 할 것이다."라고 말했지만, 자유 커널 (리눅스)이 이미 존재하기 때문에 GNU 시스템에 "완성이 중요하지 않다"고 덧붙였다. 그리고 허드를 완성하는 것은 자유 운영체제에 남아있는 주요 문제인 장치 지원을 해결하지 못할 것이다.

데비안 프로젝트는 IBM PC 호환 시스템용 허드 기반 GNU 운영체제의 바이너리 배포판을 제작하기 위해 허드 프로젝트를 진행해 왔다.

수년간의 정체 이후, 개발은 2015년2016년에 다시 활발해졌으며, 이 두 해 동안 4개의 릴리스가 있었지만, 그 이후로는 더 이상 없었다.[8]

2015년 8월 20일, 구글 서머 오브 코드 기간 동안 GNU Guix가 GNU 허드로 포팅되었다는 발표가 있었다.[9]

3. 3. 개발 진행과 리눅스의 등장

리처드 스톨먼은 1983년 9월, 자유 소프트웨어GNU 운영체제를 만들기 위한 GNU 프로젝트를 설립했다.[6] 초기에는 커널 개발에 필요한 텍스트 편집기, 유닉스 셸, 컴파일러, 디버거 등이 작성되었다. 1989년에는 GPL이 만들어졌지만, 핵심 구성 요소인 커널은 아직 없었다.[7]

1986년, 매사추세츠 공과대학교 (MIT) 컴퓨터 과학 연구소 (LCS)의 스티브 워드 교수와 그의 그룹이 개발한 TRIX 운영체제 연구를 기반으로 커널을 만들려는 시도가 있었으나 실패했다. 1990년에 허드 개발이 시작되었다. 초기 허드 아키텍트였던 토마스 부쉬넬은 4.4BSD-Lite 커널을 적용하는 계획이 "훌륭하게 성공했을 것이고 세상은 매우 달라졌을 것이다."라고 회고했다. 1987년, 리처드 스톨먼은 카네기 멜론 대학교의 리처드 라시드가 개발한 Mach 마이크로커널을 사용할 것을 제안했지만, CMU가 Mach 코드를 적절한 라이선스로 공개할지 불확실하여 3년 동안 지연되었다.

1991년, 리눅스 커널이 출시되면서 GNU의 사용자 공간 구성 요소는 리눅스 커널 기반 운영체제에서 주로 사용되었고, ''GNU/Linux''라는 용어가 생겨났다.

허드 개발은 느리게 진행되어, 스톨먼이 2002년에 GNU/Hurd 출시를 낙관적으로 예측했음에도 불구하고, 프로덕션 환경에 적합하지 않다고 평가받았다. 개발은 기대에 미치지 못했고, 많은 버그와 누락된 기능이 있었다. 2010년, 스톨먼은 "GNU 허드에 대해 낙관적이지 않다. 약간의 진전은 있지만, 진정으로 뛰어나려면 많은 심각한 문제를 해결해야 할 것이다."라고 말했다. 그러나 자유 커널 (리눅스)이 이미 존재하기 때문에 GNU 시스템에 "완성이 중요하지 않다"고 덧붙였다.

데비안 프로젝트는 IBM PC 호환 시스템용 허드 기반 GNU 운영체제의 바이너리 배포판을 제작하기 위해 허드 프로젝트를 진행해 왔다.

2015년과 2016년에는 개발이 다시 활발해져 4개의 릴리스가 있었지만, 그 이후로는 더 이상 없었다.[8] 2015년 8월 20일, 구글 서머 오브 코드 기간 동안 GNU Guix가 GNU 허드로 포팅되었다는 발표가 있었다.[9]

3. 4. 지속적인 개발 노력과 현재 상황

리처드 스톨먼은 1983년 9월, 자유 소프트웨어 GNU 운영체제를 만들려는 목표로 GNU 프로젝트를 설립했다.[6] 초기에 텍스트 편집기, 유닉스 셸, 컴파일러, 디버거 등 커널 개발에 필요한 구성 요소들이 작성되었다.[7] 1989년에는 GPL이 생겨났고, 유일하게 빠진 주요 구성 요소는 커널이었다.[7]

허드 개발은 1990년에 매사추세츠 공과대학교(MIT) 컴퓨터 과학 연구소(LCS)의 스티브 워드 교수와 그의 그룹이 개발한 TRIX 운영체제 연구를 기반으로 시작되었다. 초기 허드 아키텍트인 토마스 부쉬넬은 4.4BSD-Lite 커널을 적용하는 것이 초기 계획이었으며, "이제 와서 보면 이것이 훌륭하게 성공했을 것이고 세상은 매우 달라졌을 것이다."라고 회고했다. 1987년 리처드 스톨먼은 카네기 멜론 대학교의 리처드 라시드가 개발한 Mach 마이크로커널을 사용할 것을 제안했다. 그러나 CMU가 Mach 코드를 적절한 라이선스 하에 공개할지 여부에 대한 불확실성으로 인해 이 작업은 3년 동안 지연되었다.

1991년 리눅스 커널이 출시되면서 GNU의 사용자 공간 구성 요소의 주요 사용자는 곧 리눅스 커널 기반 운영체제(리눅스 배포판)가 되었고, ''GNU/Linux''라는 용어가 생겨났다.

허드의 개발은 느리게 진행되었다. 스톨먼이 2002년에 그 해 말에 GNU/Hurd를 출시할 것이라고 낙관적으로 발표했음에도 불구하고, 허드는 여전히 프로덕션 환경에 적합하지 않다고 여겨진다. 전반적인 개발은 기대에 미치지 못했으며, 여전히 상당수의 버그와 누락된 기능이 있다. 2010년, 20년의 개발 기간 이후, 스톨먼은 "GNU 허드에 대해 낙관적이지 않다. 약간의 진전은 있지만, 진정으로 뛰어나려면 많은 심각한 문제를 해결해야 할 것이다."라고 말했지만, 자유 커널(리눅스)이 이미 존재하기 때문에 GNU 시스템에 "완성이 중요하지 않다"고 덧붙였다.

데비안 프로젝트는 허드 기반 GNU 운영체제의 바이너리 배포판을 제작하기 위해 허드 프로젝트를 진행해 왔다. 수년간의 정체 이후, 개발은 2015년과 2016년에 다시 활발해졌으며, 이 두 해 동안 4개의 릴리스가 있었지만, 그 이후로는 더 이상 없었다.[8] 2015년 8월 20일, 구글 서머 오브 코드 기간 동안 GNU Guix가 GNU 허드로 포팅되었다는 발표가 있었다.[9]

리처드 스톨먼이 제창하여 1990년부터 개발이 시작되었다.[17] UNIX 대체품 개발을 목표로 하는 GNU 프로젝트에게 커널에 해당하는 Hurd(및 Mach)의 개발은 최중요 과제였지만, 개발 속도는 늦어 2011년 현재에도 정식 버전의 릴리스에 이르지 못하고 있다. Hurd를 채택한 배포판으로 Debian GNU/Hurd에 의한 개발판이 존재하지만, 이것에 대해서도 공식 버전의 릴리스 시기는 미정이다.

개발 지연으로 인해, UNIX 호환 자유 커널로서는 GNU 프로젝트의 것이 아닌 리눅스가 사실상의 표준이 되고 있다. 개발 속도 차이에 대해 에릭 S. 레이먼드는 《성당과 시장》에서 성당 방식과 바자 방식의 차이에 따른다고 주장하고 있다. 한편, 스톨먼은 개발 지연은 마이크로커널의 디버깅이 예상 이상으로 어려웠기 때문이며, 리눅스가 Hurd에 비해 빨리 개발될 수 있었던 것은 리눅스가 모놀리식 커널이기 때문이라고 하며, 자신의 전략적 실수였다고 말했다.[18]

4. 아키텍처

GNU 허드는 많은 유닉스 계열 커널과 달리 마이크로커널 위에 구축된 서버-클라이언트 아키텍처를 채택하고 있다. 이 마이크로커널은 가장 기본적인 커널 서비스를 제공하며, 하드웨어에 대한 접근을 조정한다. 여기에는 CPU (프로세스 관리 및 스케줄링), RAM (메모리 관리), 그리고 음성, 그래픽, 대용량 저장 장치 등 다양한 입출력 장치(I/O 스케줄링)의 조정이 포함된다. 마이크로커널 설계는 이론적으로 모든 장치 드라이버를 사용자 공간 서버로 구축할 수 있게 하지만, 현재 많은 드라이버가 GNU Mach 커널 공간에 포함되어 있다.

Hurd는 '트랜슬레이터'라는 개념을 통해 파일 시스템 기능을 확장하는 모듈 프레임워크를 제공한다.[22]

4. 1. 마이크로커널 기반 설계

모놀리식, 마이크로커널, 하이브리드 커널 기반 운영 체제의 일반적인 구조.


대부분의 유닉스 계열 커널과 달리, Hurd는 가장 기본적인 커널 서비스를 제공하는 마이크로커널을 기반으로 구축된 서버-클라이언트 아키텍처를 사용한다. 이는 하드웨어에 대한 접근을 조정하는 역할을 한다. 여기에는 CPU (프로세스 관리 및 스케줄링을 통해), (메모리 관리를 통해), 사운드, 그래픽, 대용량 저장 장치 등을 위한 다양한 입출력 장치 (I/O 스케줄링을 통해)에 대한 조정이 포함된다. 이론적으로 마이크로커널 설계는 모든 장치 드라이버를 사용자 공간에서 작동하는 서버로 구축할 수 있지만, 오늘날 이 종류의 대부분의 드라이버는 여전히 GNU Mach 커널 공간에 포함되어 있다.

Hurd 개발자에 따르면, 마이크로커널 기반 설계의 주요 장점은 시스템을 확장할 수 있다는 것이다. 새로운 모듈을 개발하는 데 커널의 나머지 부분에 대한 깊은 지식이 필요하지 않으며, 한 모듈의 버그가 전체 시스템을 충돌시키지 않는다. Hurd는 파일 시스템 기능을 확장하는 데 사용되는 모듈의 프레임워크인 ''트랜슬레이터''라는 개념을 제공한다.[10]

Hurd는 초기부터 GNU Mach를 마이크로커널로 사용하도록 개발되었다. 리처드 스톨만은 이것이 작업의 상당 부분을 절약하여 속도를 높일 것이라고 생각했지만, 그는 그 생각에 대해 틀렸다고 인정했다. Mach 마이크로커널에서 작동하는 다른 유닉스 계열 시스템으로는 OSF/1, Lites, MkLinux 등이 있다. macOS와 NeXTSTEP은 Mach를 기반으로 하는 하이브리드 커널을 사용한다.

4. 2. 트랜슬레이터

Hurd는 GNU Mach를 마이크로커널로 사용하도록 개발되었다. Hurd 개발자에 따르면, 마이크로커널 기반 설계의 주요 장점은 시스템을 확장할 수 있다는 것이다. 새로운 모듈을 개발하는 데 커널의 나머지 부분에 대한 깊은 지식이 필요하지 않으며, 한 모듈의 버그가 전체 시스템을 충돌시키지 않는다. Hurd는 파일 시스템 기능을 확장하는 데 사용되는 모듈의 프레임워크인 ''트랜슬레이터''라는 개념을 제공한다.[10]

4. 3. 유닉스 개념의 확장

허드에서는 여러 가지 전통적인 유닉스 개념이 대체되거나 확장되었다.

유닉스에서는 실행 중인 각 프로그램에 연결된 사용자 ID가 있는데, 이는 일반적으로 프로세스를 시작한 사용자에 해당한다. 이 ID는 프로그램에 허용되는 작업을 크게 결정한다. 외부 프로세스는 실행 중인 프로그램의 사용자 ID를 변경할 수 없다. 반면에, 허드 프로세스는 여러 ID, 하나 또는 없는 ID를 포함할 수 있는 사용자 ID ''집합''으로 실행된다. 충분한 권한을 가진 프로세스는 다른 프로세스에 ID를 추가하고 제거할 수 있다. 예를 들어, 올바른 로그인 암호를 대가로 ID를 제공하는 암호 서버가 있다.

파일 시스템과 관련하여, 적절한 프로그램은 단일 파일 또는 전체 디렉토리 계층에 대한 ''번역기''로 지정될 수 있다. 번역된 파일 또는 두 번째 경우의 계층 아래에 있는 모든 파일에 대한 모든 접근은 실제로 해당 프로그램에 의해 처리된다. 예를 들어, 파일 번역기는 유닉스 심볼릭 링크처럼 단순히 읽기 및 쓰기 작업을 다른 파일로 리디렉션할 수 있다. 유닉스 ''마운트''의 효과는 파일 시스템 번역기를 설정하여 달성된다("settrans" 명령 사용). 번역기는 사용자에게 서비스를 제공하는 데에도 사용될 수 있다. 예를 들어, ftpfs 번역기를 사용하면 사용자가 원격 FTP 사이트를 디렉토리 내에 캡슐화할 수 있다. 그런 다음 ls, cp, rm과 같은 표준 도구를 사용하여 원격 시스템의 파일을 조작할 수 있다. 훨씬 더 강력한 번역기는 사용자가 여러 디렉토리를 하나로 통합할 수 있는 UnionFS와 같은 것이다. 따라서 통합된 디렉토리를 나열하면 모든 디렉토리의 내용이 표시된다.

5. 서버 구조

데비안 문서에 따르면, GNU 허드는 18개의 핵심 서버와 6개의 파일 시스템 서버로 구성된 총 24개의 서버를 가지고 있다. 각 서버는 POSIX API의 특정 부분을 담당하며, 리눅스의 블록 레이어와 유사한 래핑 레이어 역할을 하는 스토리지 서버도 존재한다. 리눅스VFS에 해당하는 기능은 libdiskfs와 libpager 라이브러리를 통해 구현된다.

5. 1. 핵심 서버


  • '''auth''' (인증 서버): 프로그램으로부터 요청과 암호를 받아 프로그램의 권한을 변경하는 ID를 제공한다.
  • '''crash''' (크래시 서버): 모든 치명적인 오류를 처리한다.
  • '''eieio''' (번역 서버): TODO
  • '''exec''' (실행 서버): 실행 가능한 이미지(현재는 ELF와 a.out를 지원)를 메모리에서 실행 가능한 이미지로 변환한다.
  • '''fifo''' (FIFO 변환기): 명명된 파이프를 구현한다.
  • '''new-fifo''' (새로운 FIFO 서버): 명명된 파이프를 위한 대체 서버이다.
  • '''firmlink''' (firmlink 변환기): firmlink를 구현한다 - "심볼릭 링크하드 링크의 중간".[12]
  • '''fwd''' (전달 서버): 요청을 다른 서버로 전달하며, fifo 및 symlink 서버에서 사용된다.
  • '''hostmux''' (호스트 멀티플렉서 서버)
  • '''ifsock''' (소켓 인터페이스 서버): UNIX 도메인 소켓 주소를 지원한다.
  • '''init''' (init 서버): 기본 시스템 부팅 및 구성.
  • '''magic''' (매직 서버): 이름 조회가 결과가 프로세스의 상태와 관련될 때 프로세스 내부적으로 해결되어야 함을 알린다.
  • '''null''' (null 서버): /dev/null 및 /dev/zero를 구현한다.
  • '''pfinet''' (pfinet 서버): PF_INET 프로토콜 패밀리를 구현한다.
  • '''pflocal''' (pflocal 서버): UNIX 도메인 소켓을 구현한다.
  • '''proc''' (프로세스 서버): PID를 할당하고 프로세스 수준의 작업을 관리한다.
  • '''symlink''' (심볼릭 링크 변환기): 이를 지원하지 않는 파일 시스템에 대한 심볼릭 링크를 구현한다.
  • '''term''' (터미널 서버): POSIX 터미널.
  • '''usermux''' (사용자 멀티플렉서 서버): 사용자별 변환기를 호출한다.


데비안의 문서에 따르면, 18개의 코어 서버와 6개의 파일 시스템 서버로 구성된 24개의 서버가 존재한다.

서버명설명
auth프로그램의 요청과 비밀번호를 받아, 해당 프로그램에 시스템 권한을 변경하는 ID를 부여한다.
crash치명적인 오류를 처리한다.
eieioTODO
exec실행 가능 이미지(현재는 ELF와 a.out이 지원됨)를 메모리상의 실행 가능 이미지(runnable)로 변환한다.
fifoFIFO 번역기: 명명된 파이프를 구현한다.
new-fifo명명된 파이프에 대한 다른 서버.
firmlinkfirmlink의 구현.
fwd요청을 다른 서버로 전달하며, fifo와 symlink 서버에서 사용된다.
hostmux호스트 멀티플렉서 서버
ifsockUNIX 도메인 소켓 주소를 지원한다.
initinit 서버: 기본적인 시스템 부트 및 설정.
magic프로세스 상태에 결과가 관련될 때, 프로세스에 의해 내부적으로 수행되어야 하는 이름 해석을 시그널한다.
null/dev/null과 /dev/zero의 구현.
pfinetPF\_INET 프로토콜 패밀리의 구현.
pflocalUNIX 도메인 소켓의 구현.
procPID를 할당하고, 프로세스 레벨의 액션을 관리한다.
symlink파일 시스템에서 지원하지 않는 경우의 심볼릭 링크 구현.
termPOSIX 터미널.
usermux사용자 특유의 번역기를 발동한다.


5. 2. 파일 시스템 서버

ext2 파일 시스템 변환기이다. 마이크로커널로부터 디스크 블록을 받아 애플리케이션에 파일과 디렉터리를 제공한다.

ISO 9660 파일 시스템 변환기이다. CD 또는 DVD의 블록을 애플리케이션용 파일과 디렉토리로 변환한다.

네트워크 파일 시스템을 참조.

파일 전송 프로토콜 파일 시스템 변환기이다.

스토리지 변환기이다.

이 서버들은 집합적으로 POSIX API를 구현하며, 각 서버는 인터페이스의 일부를 구현한다. 예를 들어, 다양한 파일 시스템 서버는 각각 파일 시스템 호출을 구현한다. 스토리지 서버는 리눅스의 블록 레이어와 유사한 래핑 레이어 역할을 한다. 리눅스VFS에 해당하는 것은 libdiskfs 및 libpager 라이브러리로 구현된다.

6. GNU Hurd 기반 배포판

Xfce를 탑재한 데비안 GNU/Hurd


Hurd 기반 GNU 배포판은 다음과 같다.

  • 아치 허드 (Arch Hurd)
  • Bee GNU/Hurd (단종)
  • 데비안 GNU/Hurd
  • 젠투 GNU Hurd (단종)
  • GNU/Hurd 라이브 CD (단종)
  • Guix System (개발 중)

참조

[1] 웹사이트 GNU Hurd ported to AArch64, and more Hurd news https://www.osnews.c[...] 2024-04-22
[2] 웹사이트 COPYING - hurd/hurd.git - Hurd http://git.savannah.[...] 2019-02-25
[3] 웹사이트 30 Years On, HURD Lives: GNU Updates Open Source Unix Kernel http://thevarguy.com[...] 2015-04-20
[4] 웹사이트 What is a Multiserver Microkernel? https://www.gnu.org/[...] GNU 2015-08-11
[5] 웹사이트 The Hurd: GNU's quest for the perfect kernel https://lwn.net/Arti[...] LWN.net 2012-10-05
[6] 웹사이트 GNU History https://cs.stanford.[...] 2024-09-03
[7] 웹사이트 GNU HURD: Altered visions and lost promise http://www.h-online.[...] 2012-10-01
[8] 뉴스 Free Software Foundation changes priorities - SD Times http://sdtimes.com/f[...] 2017-04-17
[9] 메일링리스트 [GSoC update] Porting Guix to GNU/Hurd https://lists.gnu.or[...] guix-devel 2015-08-20
[10] 서적 Operating Systems In Depth: Design and Programming https://books.google[...] John Wiley & Sons 2012-11-29
[11] 웹사이트 Porting the Hurd to another microkernel https://www.gnu.org/[...] Free Software Foundation 2017-05-06
[12] 웹사이트 GNU/Hurd - Documentation http://www.debian.or[...] Debian 2012-07-12
[13] 웹사이트 GNU Hurd/ hurd/ running/ distrib http://www.gnu.org/s[...] 2017-09-21
[14] 웹사이트 GNU Hurd/ hurd/ running/ live cd https://www.gnu.org/[...] 2017-09-21
[15] 웹사이트 GNU Hurd’s 64bit port progress, porting started to Aarch64, POWER9 – OSnews https://www.osnews.c[...] 2024-08-27
[16] 문서 UNIX에서 말하는 데몬(소프트웨어)
[17] 문서 현재 스톨만 자신은 개발에 참여하고 있지 않다
[18] 서적 Free Software, Free Society: Selected Essays of Richard Stallman GNU Press 2002
[19] 웹사이트 GNU Hurd/ history http://www.gnu.org/s[...] Free Software Foundation, Inc. 2015-11-29
[20] 문서 4.3BSD의 라이선스 문제에 대해서는 Berkeley Software Distribution (BSD)를 참조하십시오.
[21] 웹사이트 Debian GNU/Hurd https://www.debian.o[...] Software in the Public Interest, Inc. and others 2015-11-29
[22] 서적 Operating Systems In Depth: Design and Programming https://books.google[...] John Wiley & Sons 2012-11-29
[23] 웹인용 GNU Hurd 0.8, GNU Mach 1.7, GNU MIG 1.7 released https://www.gnu.org/[...] 2016-04-18
[24] 웹사이트 https://www.gnu.org/[...]
[25] 웹사이트 https://www.gnu.org/[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com